const { OPERATION_IS_NOT_ALLOWED } = require("../config/error-constants")
const permissionService = require("../service/permission.service")

// 判断登录后的用户能不能进行某些操作，比如当前用户只能修改跟自己有关的动态，不能删除别人的动态
// const verifyMomentPermission = async (ctx, next) => {
//   // 获取参数
//   const { momentId } = ctx.params
//   const { id } = ctx.user
//   // 去服务器查询，拿用户id和当前的momentId去找数据，假如找到0个证明不是自己发的动态
//   const isAuth = await permissionService.checkMoment(momentId, id)
//   if (!isAuth) {
//     return ctx.app.emit("error", OPERATION_IS_NOT_ALLOWED, ctx)
//   }
//   await next()
// }

const verifyPermission = async (ctx, next) => {
  // 获取参数
  const resource = Object.keys(ctx.params)[0] // 例子：拿到mementId的key名
  const resourceName = resource.replace("Id", "") // momentId -> moment
  const resourceId = ctx.params[resource] // 拿到momentId的value值
  const { id } = ctx.user
  // 去服务器查询，拿用户id和当前的momentId去找数据，假如找到0个证明不是自己发的动态
  const isAuth = await permissionService.checkResource(
    resourceName,
    resourceId,
    id
  )
  if (!isAuth) {
    return ctx.app.emit("error", OPERATION_IS_NOT_ALLOWED, ctx)
  }
  await next()
}

module.exports = {
  verifyPermission,
}
